package com.weipai.springboot.module.mapper;

import com.weipai.springboot.model.Product;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

import java.util.List;
import java.util.Map;

public interface ProductMapper {
    int deleteByPrimaryKey(String productId);

    int insert(Product record);

    int insertSelective(Product record);

    Product selectByPrimaryKey(String productId);

    int updateByPrimaryKeySelective(Product record);

    int updateByPrimaryKey(Product record);

    //分页查询
    List<Map<String,Object>> selectAllProductByPage(@Param("start") Integer start, 
                                                    @Param("end") Integer end, 
                                                    @Param("productCategoryId") String productCategoryId,
                                                    @Param("isAudit") Integer isAudit,
                                                    @Param("search") String search);

    //分页查询莫一分类的所有商品数量
    Integer selectAllProductByPageAmount(@Param("productCategoryId") String productCategoryId, 
                                         @Param("isAudit") Integer isAudit,
                                         @Param("search") String search);

    //修改商品的第一个页面
    Map<String,Object> getProductInfoById01(String id);

    //更新货品
    @Update("update c_product set product_name=#{productName}, product_spec=#{productSpec}, " +
            "update_time=date_format(now(), '%Y-%m-%d %H:%i:%s') where product_id=#{productId}")
    int updateProduct(@Param("productId") String productId, @Param("productName") String productName, @Param("productSpec") String productSpec);

    //通过spuNumber查询货品
    Map<String, String> getProductBySpuNumber(String spuNumber);

    //查出货品的详情和图片
    Map<String,Object> getProductImgAndDescBySpuNumber(String spuNumber);

    //得到最大产品编号的数据
    Map<String,Object> getMaxSpuNumberFlag();

    //产品审核
    @Update("update c_product set is_audit=#{status}, " +
            "update_time=date_format(now(), '%Y-%m-%d %H:%i:%s') where product_id=#{id}")
    int changeIsAudit(@Param("id") String id, @Param("status") Integer status);

    int updateStatus(@Param("spuNumber") String spuNumber, @Param("status") Integer status);

    //删除产品
    int deleteProductBySpuNumber(String spuNumber);

    //查询产品的数量
    int getProductAmount(@Param("status") int status);

    Integer getEvaluateAmount();

    Map<String,Object> getMaxSpuNumber();

    //搜索所有产品
    List<Product> selectAllProduct();
}